package com.xuelang.pipeline.domain.task.repository;

import com.xuelang.pipeline.client.common.result.PageRecord;
import com.xuelang.pipeline.client.task.dto.TaskDefQuery;
import com.xuelang.pipeline.domain.task.TaskDef;

import java.util.List;

/**
 * 流水线任务定义仓库
 *
 * @author liuyuan.ly
 * @since 2024/5/14 9:48
 */
public interface TaskDefRepository {
    /**
     * 获取流水线任务定义列表，有过滤条件
     *
     * @param currentPage
     * @param pageSize
     * @param taskDefQuery
     * @return
     */
    PageRecord<TaskDef> pageList(long currentPage, long pageSize, TaskDefQuery taskDefQuery);
    /**
     * 获取流水线任务定义列表，有过滤条件
     *
     * @param taskDefQuery
     * @return
     */
    List<TaskDef> list(TaskDefQuery taskDefQuery);

    /**
     * 新增流水线任务定义
     *
     * @param taskDef
     * @return
     */
    Boolean save(TaskDef taskDef);

    /**
     * 更新流水线任务定义
     *
     * @param taskDef
     * @return
     */
    Boolean update(TaskDef taskDef);
    /**
     * 删除流水线任务定义
     *
     * @param uuid
     * @return
     */
    Boolean delete(String uuid);

    /**
     * 判断流水线任务定义编码是否存在
     *
     * @param refTag
     * @return
     */
    Boolean existsCode(String refTag);

    /**
     * 判断流水线任务定义名称是否存在
     *
     * @param taskDefName
     * @return
     */
    Boolean existsName(String taskDefName);
    /**
     * 查询流水线任务定义
     *
     * @param uuid
     * @return
     */
    TaskDef query(String uuid);
}
